home *** CD-ROM | disk | FTP | other *** search
Wrap
Text File | 1992-07-06 | 46.9 KB | 1,532 lines
(*^ ::[paletteColors = 128; showRuler; currentKernel; fontset = title, inactive, noPageBreakBelow, nohscroll, preserveAspect, groupLikeTitle, center, M7, L1, e8, 28, "Times"; ; fontset = subtitle, inactive, noPageBreakBelow, nohscroll, preserveAspect, groupLikeTitle, center, M7, L1, e6, 22, "Times"; ; fontset = subsubtitle, inactive, noPageBreakBelow, nohscroll, preserveAspect, groupLikeTitle, center, M7, L1, e6, 16, "Times"; ; fontset = section, inactive, noPageBreakBelow, nohscroll, preserveAspect, groupLikeSection, grayBox, M22, L1, a20, 22, "Times"; ; fontset = subsection, inactive, noPageBreakBelow, nohscroll, preserveAspect, groupLikeSection, blackBox, M19, L1, a15, 16, "Times"; ; fontset = subsubsection, inactive, noPageBreakBelow, nohscroll, preserveAspect, groupLikeSection, whiteBox, M18, L1, a12, 14, "Times"; ; fontset = text, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 14, "Times"; ; fontset = smalltext, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12; fontset = input, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeInput, M42, N23, L-5, 14, "Courier"; ; fontset = output, output, inactive, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeOutput, M42, N23, L-5, 14, "Courier"; ; fontset = message, inactive, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeOutput, M42, N23, R65535, L-5, 14, "Courier"; ; fontset = print, inactive, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeOutput, M42, N23, L-5, 14, "Courier"; ; fontset = info, inactive, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeOutput, M42, N23, B65535, L-5, 14, "Courier"; ; fontset = postscript, PostScript, formatAsPostScript, output, inactive, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeGraphics, M7, l34, w282, h287, L1, 14, "Courier"; ; fontset = name, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12, "Times"; ; fontset = header, inactive, noKeepOnOnePage, preserveAspect, M7, L1, 14, "Times"; ; fontset = Left Header, inactive, 14, "Times"; ; fontset = footer, inactive, noKeepOnOnePage, preserveAspect, center, M7, L1, 14, "Times"; ; fontset = Left Footer, inactive, 14, "Times"; ; fontset = help, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12; fontset = clipboard, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 14, "Times"; ; fontset = completions, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 14, "Times"; ; fontset = special1, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 14, "Times"; ; fontset = special2, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 14, "Times"; ; fontset = special3, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 14, "Times"; ; fontset = special4, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 14, "Times"; ; fontset = special5, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 14, "Times"; ;] :[font = title; inactive; preserveAspect; rightWrapOffset = 526; fontColorBlue = 65535; ] COSY_PAK Control Systems Analysis Package for Mathematica ;[s] 3:0,0;49,1;60,2;62,-1; 3:1,25,19,Times,1,28,0,0,0;1,26,20,Times,3,28,0,0,0;1,25,19,Times,1,28,0,0,0; :[font = subtitle; inactive; preserveAspect; rightWrapOffset = 526; ] By D. Ostermiller C.K. Chen N. Sreenath 1992 :[font = message; inactive; preserveAspect; center; rightWrapOffset = 526; fontName = "Courier"; ] Systems Engineering Department Case School of Engineering Case Western Reserve University Cleveland, OH, 44106-7070 :[font = message; inactive; preserveAspect; center; rightWrapOffset = 526; ] Support from CWRU Information and Network Services - Dr. Ray Neff Case Alumni Association The Lilly Foundation :[font = input; preserveAspect; rightWrapOffset = 526; ] :[font = subtitle; inactive; preserveAspect; rightWrapOffset = 526; ] Chapter 7 State Space Analysis Methods ;[s] 4:0,0;10,1;11,2;40,3;42,-1; 4:1,20,15,Times,1,22,65535,0,0;1,20,15,Times,1,22,0,0,0;1,20,15,Times,1,22,0,0,65535;1,16,12,Times,1,18,0,0,0; :[font = section; inactive; Cclosed; preserveAspect; rightWrapOffset = 526; startGroup; ] Initialization :[font = input; initialization; preserveAspect; rightWrapOffset = 526; ] *) (* Initialization of Path *) (* Example For UNIX machine (Default) *) $Path=Join[$Path, {"~/Library/Mathematica/Packages"}]; (* Example For IBM PC *) (* $Path=Join[$Path, {"c:\winmath\packages"}]; *) (* Example For MAC *) (* $Path=Join[$Path, {"My_Harddisk:Mathematica:Package"}]; *) (* :[font = input; initialization; Cclosed; preserveAspect; rightWrapOffset = 526; startGroup; ] *) Needs["COSYPAK`chap7`"] (* :[font = print; inactive; preserveAspect; rightWrapOffset = 526; endGroup; endGroup; ] Support module has been loaded. Region of convergence routines for the transform rule bases are loaded. The knowledge base of signal processing operators has been loaded. Supporting routines for transform rule bases are loaded. Supporting routines and objects for the Laplace transform are loaded. Supporting routines for filter design are loaded. The forward Laplace transform rule base LaPlace has been loaded. The inverse Laplace transform rule base InvLaPlace has been loaded. :[font = section; inactive; Cclosed; preserveAspect; rightWrapOffset = 526; startGroup; ] Acknowledgements :[font = text; inactive; preserveAspect; rightWrapOffset = 526; endGroup; ] Special thanks to Brian Evans of Georgia Tech for the LaPlace transform and signal packages which is a part of the Signal Processing Packages :Copyright: Copyright 1989-1991 by Brian L. Evans, Georgia Tech Research Corporation. :[font = section; inactive; Cclosed; preserveAspect; rightWrapOffset = 526; startGroup; ] Introduction :[font = text; inactive; preserveAspect; rightWrapOffset = 526; ] In this notebook we consider linear time invariant control systems in a standard state space form x'(t) = Ax(t) + Bu(t) y(t) = Cx(t) + Du(t) where x = n element state vector u = r element input signal y = m element output vector A = n x n matrix B = n x r matrix C = m x n matrix D= m x r matrix All matrices are constant real matricies making the system real time invariant. The notation x'(t) indicates the first derivative of the dependent variable "x" on the independent time variable "t". We refer to the above representation as a `standard form' throughout this notbook. Remark : Presently we support only single input single output systems (SISO), i.e., m =1 and r=1. Future versions would incorporate multi-input multi-output systems (MIMO).The general algorithms for these functions are given in : Ogata, K., in "Modern Control Engineering", Second Edition", Prentice Hall, New Jersey, 1991. Remark : The functions in this notebook were designed with the advanced student or the established engineer in mind. In this spirit, it is assumed that the user has an adequate knowledge of state space systems and some experience with Mathematica. ;[s] 8:0,0;693,1;702,2;837,3;1072,4;1078,5;1080,6;1081,7;1323,-1; 8:1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,2,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,2,14,0,0,0;1,11,8,Times,0,12,0,0,0;1,13,10,Times,0,14,0,0,0; :[font = subsection; inactive; Cclosed; preserveAspect; rightWrapOffset = 526; startGroup; ] Basic State Space Methods :[font = text; inactive; preserveAspect; rightWrapOffset = 526; ] Basic methods such as ODE to state space, state space to transfer function, linearization of nonlinear system of equations is discussed in detail in the COSY_Notes notebook "02_Math_Models.ma". However, these functions have been loaded if you initialized the cells. To load these functions evaluate the Initialization cell. :[font = subsection; inactive; Cclosed; preserveAspect; rightWrapOffset = 526; startGroup; ] ODE to State Space :[font = text; inactive; preserveAspect; rightWrapOffset = 526; fontName = "Courier"; endGroup; ] See "02_Math_Models" notebook for examples :[font = subsection; inactive; Cclosed; preserveAspect; rightWrapOffset = 526; startGroup; ] State Space to Transfer Function :[font = text; inactive; preserveAspect; rightWrapOffset = 526; fontName = "Courier"; endGroup; ] See "02_Math_Models" notebook for examples :[font = subsection; inactive; Cclosed; preserveAspect; rightWrapOffset = 526; startGroup; ] Linearization of a Nonlinear System of Equations :[font = text; inactive; preserveAspect; rightWrapOffset = 526; fontName = "Courier"; endGroup; endGroup; ] See "02_Math_Models" notebook for examples :[font = subsection; inactive; Cclosed; preserveAspect; rightWrapOffset = 526; startGroup; ] Support Linear Algebra Functions :[font = text; inactive; preserveAspect; rightWrapOffset = 526; ] The functions written for this project can be divided into two main groups. These groups are support functions and main functions. Support functions are functions that are primarily used by the main functions while the main functions are designed for operation by the user. The support functions are matrixpower, rank, and, tpose. These functions are used within the main functions. Generally, Mathematica functions are given names with the first letter of the name capitalized (such as Inverse[A]) and with the beginning letter of any separate word included in the function name capitalized ( the command IdentityMatrix[n] is an example). Note : Some of the functions that we give here have equivalents in Mathematica 2.0 and higher. COSY_PAK Function matrixpower[A, n]: The function matrixpower returns the matrix An, where n is a positive integer. This function is used by the COSY_PAK functions controllable, observable, placepolegain, and obspoleplace functions. ;[s] 19:0,0;658,1;664,2;753,3;756,4;774,5;794,6;839,7;840,8;904,9;913,10;923,11;935,12;937,13;947,14;949,15;962,16;969,17;981,18;993,-1; 19:1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,2,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,13,10,Times,32,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,11,8,Times,0,12,0,0,0; :[font = text; inactive; Cclosed; preserveAspect; rightWrapOffset = 526; startGroup; ] COSY_PAK Function rank[A]: returns the rank of matrix A. The function rank returns the integer value corresponding to the number of linearly independent rows in the matrix A. The rank function is used by the functions observable, controllable, and outcont. ;[s] 9:0,0;8,1;9,2;17,3;39,4;46,5;76,6;77,7;81,8;283,-1; 9:1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,11,8,Times,0,12,0,0,0;1,13,10,Times,0,14,0,0,0; :[font = subsubsection; inactive; Cclosed; preserveAspect; rightWrapOffset = 526; startGroup; ] Example :[font = input; preserveAspect; rightWrapOffset = 526; endGroup; endGroup; ] a={{1,1},{-2,-1}}; rank[a] :[font = text; inactive; preserveAspect; rightWrapOffset = 526; endGroup; endGroup; ] COSY_PAK Function tpose[A]: returns the transpose of matrix A. ;[s] 3:0,0;26,1;61,2;63,-1; 3:1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,10,8,Times,1,12,0,0,0; :[font = section; inactive; Cclosed; preserveAspect; rightWrapOffset = 526; startGroup; ] State Trantition Matrix :[font = text; inactive; preserveAspect; rightWrapOffset = 526; ] The solution of a linear time invariant system represented in a state space form involves the evaluation of the state transition matrix. It can be proved that the state transition matrix is equivalent to the evaluating the exp(At)=exponential of the matrix (A t). The matrix exp(At) of a square matrix A can be calculated according to the equation exp(At) = L-1 {[sI - A]-1}. COSY_PAK Function ExpAt[a]: returns exponential matrix of square matrix A. ;[s] 12:0,0;389,1;391,2;401,3;403,4;407,5;424,6;446,7;454,8;500,9;501,10;502,11;523,-1; 12:1,13,10,Times,0,14,0,0,0;1,13,10,Times,32,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,13,10,Times,32,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,11,9,Courier,1,14,0,0,0;1,11,9,Courier,0,14,0,0,0;1,11,9,Courier,1,14,0,0,0;1,11,9,Courier,0,14,0,0,0;1,11,8,Times,0,12,0,0,0; :[font = subsubsection; inactive; Cclosed; preserveAspect; rightWrapOffset = 526; startGroup; ] Example :[font = input; Cclosed; preserveAspect; rightWrapOffset = 526; startGroup; ] a={{1,3},{6,-3}}; results = ExpAt[a] :[font = output; output; inactive; preserveAspect; rightWrapOffset = 526; endGroup; endGroup; endGroup; ] {{((-2 + 22^(1/2))*E^((-1 - 22^(1/2))*t)*CStep[t])/88^(1/2) + ((2 + 22^(1/2))*E^((-1 + 22^(1/2))*t)*CStep[t])/88^(1/2), (3*CStep[t]*Sinh[22^(1/2)*t])/(22^(1/2)*E^t)}, {(3*(2/11)^(1/2)*CStep[t]*Sinh[22^(1/2)*t])/E^t, ((2 + 22^(1/2))*E^((-1 - 22^(1/2))*t)*CStep[t])/88^(1/2) + ((-2 + 22^(1/2))*E^((-1 + 22^(1/2))*t)*CStep[t])/88^(1/2)}} ;[o] (-1 - Sqrt[22]) t (-2 + Sqrt[22]) E CStep[t] {{------------------------------------------- + Sqrt[88] (-1 + Sqrt[22]) t (2 + Sqrt[22]) E CStep[t] ------------------------------------------, Sqrt[88] 3 CStep[t] Sinh[Sqrt[22] t] ---------------------------}, t Sqrt[22] E 2 3 Sqrt[--] CStep[t] Sinh[Sqrt[22] t] 11 {------------------------------------, t E (-1 - Sqrt[22]) t (2 + Sqrt[22]) E CStep[t] ------------------------------------------ + Sqrt[88] (-1 + Sqrt[22]) t (-2 + Sqrt[22]) E CStep[t] -------------------------------------------}} Sqrt[88] :[font = section; inactive; Cclosed; preserveAspect; rightWrapOffset = 526; startGroup; ] Time Response Using State Space Methods :[font = text; inactive; preserveAspect; rightWrapOffset = 526; ] To find the time response of a single input single output state space system of the standard form we first calculate the the state transition or the exponential of the matrix e(At). Since the system is a time invariant without loss of generality we can assume that the initial time is `0' and the final time is `t'. Alternately `t' represents the elapsed time or the time difference. Thus we first calculate the time evolution of the state as x(t) = e(At) x0 + Integral{e[A(t-tau)] B u(tau) d tau, tau, 0,t} and then substitute for y = C x(t) + D u(t). The Mathematica function Plot can then be used to produce the graph of y for values 0 <= time <= t. COSY_PAK Function SysResponse[A, B, C, x0, input, s, {t, tmin, tmax}, gopts]: Graphs system output y as a function of time for the system with matrices A, B, C, at initial state x0 from time tmin to tmax. Returns the time domain solutions for state x and output y. ;[s] 22:0,0;718,1;735,2;752,3;753,4;812,5;888,6;889,7;891,8;892,9;894,10;895,11;914,12;916,13;927,14;931,15;935,16;939,17;985,18;986,19;998,20;999,21;1002,-1; 22:1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,11,9,Courier,1,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0; :[font = subsubsection; inactive; Cclosed; preserveAspect; rightWrapOffset = 526; startGroup; ] Example :[font = text; inactive; preserveAspect; rightWrapOffset = 526; ] In the following example we will evaluate the step response of a SISO for 0<= time <=1.0 s. A description of the system in state space form is as given below. :[font = input; Cclosed; preserveAspect; rightWrapOffset = 526; startGroup; ] a={{0,1},{-25,-1}}; b={0,1}; c={1,0}; x0 = {1,1}; input=CStep[t]; results = SysResponse[a,b,c,x0,input,s,{t,0.01,1}] :[font = postscript; PostScript; formatAsPostScript; output; inactive; preserveAspect; rightWrapOffset = 526; pictureLeft = 34; pictureWidth = 466; pictureHeight = 288; ] %! %%Creator: Mathematica %%AspectRatio: 0.61803 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0.01419 0.962001 0.249046 0.347306 [ [(0)] 0.01419 0 0 2 0 Minner Mrotsboxa [(0.2)] 0.20659 0 0 2 0 Minner Mrotsboxa [(0.4)] 0.39899 0 0 2 0 Minner Mrotsboxa [(0.6)] 0.59139 0 0 2 0 Minner Mrotsboxa [(0.8)] 0.78379 0 0 2 0 Minner Mrotsboxa [(1)] 0.97619 0 0 2 0 Minner Mrotsboxa [(Time)] 0.5 0 0 2 0 0 -1 Mouter Mrotsboxa [(-0.5)] -0.0125 0.07539 1 0 0 Minner Mrotsboxa [(-0.25)] -0.0125 0.16222 1 0 0 Minner Mrotsboxa [(0)] -0.0125 0.24905 1 0 0 Minner Mrotsboxa [(0.25)] -0.0125 0.33587 1 0 0 Minner Mrotsboxa [(0.5)] -0.0125 0.4227 1 0 0 Minner Mrotsboxa [(0.75)] -0.0125 0.50952 1 0 0 Minner Mrotsboxa [(1)] -0.0125 0.59635 1 0 0 Minner Mrotsboxa [(Y\(t\))] -0.0125 0.30902 1 0 90 -1 0 Mouter Mrotsboxa [(Time Response of System )] 0.5 0.61803 0 -4 Msboxa [( )] 1.0375 0.30902 -1 0 90 Mrotsboxa [ -0.001 -0.001 0 0 ] [ 1.001 0.61903 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath %%Object: Graphics [ ] 0 setdash 0 setgray gsave gsave 0 0 0.5 setrgbcolor 0.001 setlinewidth 0.20659 0 moveto 0.20659 0.61803 lineto stroke grestore gsave 0 0 0.5 setrgbcolor 0.001 setlinewidth 0.39899 0 moveto 0.39899 0.61803 lineto stroke grestore gsave 0 0 0.5 setrgbcolor 0.001 setlinewidth 0.59139 0 moveto 0.59139 0.61803 lineto stroke grestore gsave 0 0 0.5 setrgbcolor 0.001 setlinewidth 0.78379 0 moveto 0.78379 0.61803 lineto stroke grestore gsave 0 0 0.5 setrgbcolor 0.001 setlinewidth 0 0.07539 moveto 1 0.07539 lineto stroke grestore gsave 0 0 0.5 setrgbcolor 0.001 setlinewidth 0 0.16222 moveto 1 0.16222 lineto stroke grestore gsave 0 0 0.5 setrgbcolor 0.001 setlinewidth 0 0.24905 moveto 1 0.24905 lineto stroke grestore gsave 0 0 0.5 setrgbcolor 0.001 setlinewidth 0 0.33587 moveto 1 0.33587 lineto stroke grestore gsave 0 0 0.5 setrgbcolor 0.001 setlinewidth 0 0.4227 moveto 1 0.4227 lineto stroke grestore gsave 0 0 0.5 setrgbcolor 0.001 setlinewidth 0 0.50952 moveto 1 0.50952 lineto stroke grestore gsave 0.002 setlinewidth 0.01419 0 moveto 0.01419 0.00625 lineto stroke grestore [(0)] 0.01419 0 0 2 0 Minner Mrotshowa gsave 0.002 setlinewidth 0.20659 0 moveto 0.20659 0.00625 lineto stroke grestore [(0.2)] 0.20659 0 0 2 0 Minner Mrotshowa gsave 0.002 setlinewidth 0.39899 0 moveto 0.39899 0.00625 lineto stroke grestore [(0.4)] 0.39899 0 0 2 0 Minner Mrotshowa gsave 0.002 setlinewidth 0.59139 0 moveto 0.59139 0.00625 lineto stroke grestore [(0.6)] 0.59139 0 0 2 0 Minner Mrotshowa gsave 0.002 setlinewidth 0.78379 0 moveto 0.78379 0.00625 lineto stroke grestore [(0.8)] 0.78379 0 0 2 0 Minner Mrotshowa gsave 0.002 setlinewidth 0.97619 0 moveto 0.97619 0.00625 lineto stroke grestore [(1)] 0.97619 0 0 2 0 Minner Mrotshowa gsave 0.001 setlinewidth 0.05267 0 moveto 0.05267 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.09115 0 moveto 0.09115 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.12963 0 moveto 0.12963 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.16811 0 moveto 0.16811 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.24507 0 moveto 0.24507 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.28355 0 moveto 0.28355 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.32203 0 moveto 0.32203 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.36051 0 moveto 0.36051 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.43747 0 moveto 0.43747 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.47595 0 moveto 0.47595 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.51443 0 moveto 0.51443 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.55291 0 moveto 0.55291 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.62987 0 moveto 0.62987 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.66835 0 moveto 0.66835 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.70683 0 moveto 0.70683 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.74531 0 moveto 0.74531 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.82227 0 moveto 0.82227 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.86075 0 moveto 0.86075 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.89923 0 moveto 0.89923 0.00375 lineto stroke grestore gsave 0.001 setlinewidth 0.93771 0 moveto 0.93771 0.00375 lineto stroke grestore [(Time)] 0.5 0 0 2 0 0 -1 Mouter Mrotshowa gsave 0.002 setlinewidth 0 0 moveto 1 0 lineto stroke grestore gsave 0.002 setlinewidth 0 0.07539 moveto 0.00625 0.07539 lineto stroke grestore [(-0.5)] -0.0125 0.07539 1 0 0 Minner Mrotshowa gsave 0.002 setlinewidth 0 0.16222 moveto 0.00625 0.16222 lineto stroke grestore [(-0.25)] -0.0125 0.16222 1 0 0 Minner Mrotshowa gsave 0.002 setlinewidth 0 0.24905 moveto 0.00625 0.24905 lineto stroke grestore [(0)] -0.0125 0.24905 1 0 0 Minner Mrotshowa gsave 0.002 setlinewidth 0 0.33587 moveto 0.00625 0.33587 lineto stroke grestore [(0.25)] -0.0125 0.33587 1 0 0 Minner Mrotshowa gsave 0.002 setlinewidth 0 0.4227 moveto 0.00625 0.4227 lineto stroke grestore [(0.5)] -0.0125 0.4227 1 0 0 Minner Mrotshowa gsave 0.002 setlinewidth 0 0.50952 moveto 0.00625 0.50952 lineto stroke grestore [(0.75)] -0.0125 0.50952 1 0 0 Minner Mrotshowa gsave 0.002 setlinewidth 0 0.59635 moveto 0.00625 0.59635 lineto stroke grestore [(1)] -0.0125 0.59635 1 0 0 Minner Mrotshowa gsave 0.001 setlinewidth 0 0.09276 moveto 0.00375 0.09276 lineto stroke grestore gsave 0.001 setlinewidth 0 0.11012 moveto 0.00375 0.11012 lineto stroke grestore gsave 0.001 setlinewidth 0 0.12749 moveto 0.00375 0.12749 lineto stroke grestore gsave 0.001 setlinewidth 0 0.14485 moveto 0.00375 0.14485 lineto stroke grestore gsave 0.001 setlinewidth 0 0.17958 moveto 0.00375 0.17958 lineto stroke grestore gsave 0.001 setlinewidth 0 0.19695 moveto 0.00375 0.19695 lineto stroke grestore gsave 0.001 setlinewidth 0 0.21431 moveto 0.00375 0.21431 lineto stroke grestore gsave 0.001 setlinewidth 0 0.23168 moveto 0.00375 0.23168 lineto stroke grestore gsave 0.001 setlinewidth 0 0.26641 moveto 0.00375 0.26641 lineto stroke grestore gsave 0.001 setlinewidth 0 0.28378 moveto 0.00375 0.28378 lineto stroke grestore gsave 0.001 setlinewidth 0 0.30114 moveto 0.00375 0.30114 lineto stroke grestore gsave 0.001 setlinewidth 0 0.31851 moveto 0.00375 0.31851 lineto stroke grestore gsave 0.001 setlinewidth 0 0.35324 moveto 0.00375 0.35324 lineto stroke grestore gsave 0.001 setlinewidth 0 0.3706 moveto 0.00375 0.3706 lineto stroke grestore gsave 0.001 setlinewidth 0 0.38797 moveto 0.00375 0.38797 lineto stroke grestore gsave 0.001 setlinewidth 0 0.40533 moveto 0.00375 0.40533 lineto stroke grestore gsave 0.001 setlinewidth 0 0.44006 moveto 0.00375 0.44006 lineto stroke grestore gsave 0.001 setlinewidth 0 0.45743 moveto 0.00375 0.45743 lineto stroke grestore gsave 0.001 setlinewidth 0 0.47479 moveto 0.00375 0.47479 lineto stroke grestore gsave 0.001 setlinewidth 0 0.49216 moveto 0.00375 0.49216 lineto stroke grestore gsave 0.001 setlinewidth 0 0.52689 moveto 0.00375 0.52689 lineto stroke grestore gsave 0.001 setlinewidth 0 0.54426 moveto 0.00375 0.54426 lineto stroke grestore gsave 0.001 setlinewidth 0 0.56162 moveto 0.00375 0.56162 lineto stroke grestore gsave 0.001 setlinewidth 0 0.57899 moveto 0.00375 0.57899 lineto stroke grestore gsave 0.001 setlinewidth 0 0.05803 moveto 0.00375 0.05803 lineto stroke grestore gsave 0.001 setlinewidth 0 0.04066 moveto 0.00375 0.04066 lineto stroke grestore gsave 0.001 setlinewidth 0 0.0233 moveto 0.00375 0.0233 lineto stroke grestore gsave 0.001 setlinewidth 0 0.00593 moveto 0.00375 0.00593 lineto stroke grestore gsave 0.001 setlinewidth 0 0.61372 moveto 0.00375 0.61372 lineto stroke grestore [(Y\(t\))] -0.0125 0.30902 1 0 90 -1 0 Mouter Mrotshowa gsave 0.002 setlinewidth 0 0 moveto 0 0.61803 lineto stroke grestore grestore gsave gsave 0.002 setlinewidth 0.01419 0.61178 moveto 0.01419 0.61803 lineto stroke grestore gsave 0.002 setlinewidth 0.20659 0.61178 moveto 0.20659 0.61803 lineto stroke grestore gsave 0.002 setlinewidth 0.39899 0.61178 moveto 0.39899 0.61803 lineto stroke grestore gsave 0.002 setlinewidth 0.59139 0.61178 moveto 0.59139 0.61803 lineto stroke grestore gsave 0.002 setlinewidth 0.78379 0.61178 moveto 0.78379 0.61803 lineto stroke grestore gsave 0.002 setlinewidth 0.97619 0.61178 moveto 0.97619 0.61803 lineto stroke grestore gsave 0.001 setlinewidth 0.05267 0.61428 moveto 0.05267 0.61803 lineto stroke grestore gsave 0.001 setlinewidth 0.09115 0.61428 moveto 0.09115 0.61803 lineto stroke grestore gsave 0.001 setlinewidth 0.12963 0.61428 moveto 0.12963 0.61803 lineto stroke grestore gsave 0.001 setlinewidth 0.16811 0.61428 moveto 0.16811 0.61803 lineto stroke grestore gsave 0.001 setlinewidth 0.24507 0.61428 moveto 0.24507 0.61803 lineto stroke grestore gsave 0.001 setlinewidth 0.28355 0.61428 moveto 0.28355 0.61803 lineto stroke grestore gsave 0.001 setlinewidth 0.32203 0.61428 moveto 0.32203 0.61803 lineto stroke grestore gsave 0.001 setlinewidth 0.36051 0.61428 moveto 0.36051 0.61803 lineto stroke grestore gsave 0.001 setlinewidth 0.43747 0.61428 moveto 0.43747 0.61803 lineto stroke grestore gsave 0.001 setlinewidth 0.47595 0.61428 moveto 0.47595 0.61803 lineto stroke grestore gsave 0.001 setlinewidth 0.51443 0.61428 moveto 0.51443 0.61803 lineto stroke grestore gsave 0.001 setlinewidth 0.55291 0.61428 moveto 0.55291 0.61803 lineto stroke grestore gsave 0.001 setlinewidth 0.62987 0.61428 moveto 0.62987 0.61803 lineto stroke grestore gsave 0.001 setlinewidth 0.66835 0.61428 moveto 0.66835 0.61803 lineto stroke grestore gsave 0.001 setlinewidth 0.70683 0.61428 moveto 0.70683 0.61803 lineto stroke grestore gsave 0.001 setlinewidth 0.74531 0.61428 moveto 0.74531 0.61803 lineto stroke grestore gsave 0.001 setlinewidth 0.82227 0.61428 moveto 0.82227 0.61803 lineto stroke grestore gsave 0.001 setlinewidth 0.86075 0.61428 moveto 0.86075 0.61803 lineto stroke grestore gsave 0.001 setlinewidth 0.89923 0.61428 moveto 0.89923 0.61803 lineto stroke grestore gsave 0.001 setlinewidth 0.93771 0.61428 moveto 0.93771 0.61803 lineto stroke grestore [(Time Response of System )] 0.5 0.61803 0 -4 Mshowa gsave 0.002 setlinewidth 0 0.61803 moveto 1 0.61803 lineto stroke grestore gsave 0.002 setlinewidth 0.99375 0.07539 moveto 1 0.07539 lineto stroke grestore gsave 0.002 setlinewidth 0.99375 0.16222 moveto 1 0.16222 lineto stroke grestore gsave 0.002 setlinewidth 0.99375 0.24905 moveto 1 0.24905 lineto stroke grestore gsave 0.002 setlinewidth 0.99375 0.33587 moveto 1 0.33587 lineto stroke grestore gsave 0.002 setlinewidth 0.99375 0.4227 moveto 1 0.4227 lineto stroke grestore gsave 0.002 setlinewidth 0.99375 0.50952 moveto 1 0.50952 lineto stroke grestore gsave 0.002 setlinewidth 0.99375 0.59635 moveto 1 0.59635 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.09276 moveto 1 0.09276 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.11012 moveto 1 0.11012 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.12749 moveto 1 0.12749 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.14485 moveto 1 0.14485 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.17958 moveto 1 0.17958 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.19695 moveto 1 0.19695 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.21431 moveto 1 0.21431 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.23168 moveto 1 0.23168 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.26641 moveto 1 0.26641 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.28378 moveto 1 0.28378 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.30114 moveto 1 0.30114 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.31851 moveto 1 0.31851 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.35324 moveto 1 0.35324 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.3706 moveto 1 0.3706 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.38797 moveto 1 0.38797 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.40533 moveto 1 0.40533 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.44006 moveto 1 0.44006 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.45743 moveto 1 0.45743 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.47479 moveto 1 0.47479 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.49216 moveto 1 0.49216 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.52689 moveto 1 0.52689 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.54426 moveto 1 0.54426 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.56162 moveto 1 0.56162 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.57899 moveto 1 0.57899 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.05803 moveto 1 0.05803 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.04066 moveto 1 0.04066 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.0233 moveto 1 0.0233 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.00593 moveto 1 0.00593 lineto stroke grestore gsave 0.001 setlinewidth 0.99625 0.61372 moveto 1 0.61372 lineto stroke grestore [( )] 1.0375 0.30902 -1 0 90 Mrotshowa gsave 0.002 setlinewidth 1 0 moveto 1 0.61803 lineto stroke grestore grestore gsave gsave 0.002 setlinewidth 0 0.24905 moveto 1 0.24905 lineto stroke grestore grestore gsave gsave 0.004 setlinewidth 0.02381 0.59939 moveto 0.02877 0.60062 lineto 0.03373 0.60162 lineto 0.03621 0.60203 lineto 0.03869 0.60238 lineto 0.04117 0.60268 lineto 0.04365 0.60292 lineto 0.04613 0.60311 lineto 0.04737 0.60318 lineto 0.04861 0.60323 lineto 0.04985 0.60328 lineto 0.05109 0.60331 lineto 0.05233 0.60332 lineto 0.05357 0.60332 lineto 0.05481 0.6033 lineto 0.05605 0.60328 lineto 0.05729 0.60323 lineto 0.05853 0.60318 lineto 0.06101 0.60302 lineto 0.06349 0.60281 lineto 0.06845 0.60222 lineto 0.07341 0.60141 lineto 0.08333 0.59912 lineto 0.09325 0.59597 lineto 0.10317 0.59198 lineto 0.12302 0.58152 lineto 0.14286 0.56792 lineto 0.18254 0.53217 lineto 0.22222 0.48668 lineto 0.2619 0.43374 lineto 0.30159 0.37585 lineto 0.34127 0.31561 lineto 0.38095 0.25561 lineto 0.42063 0.19835 lineto 0.46032 0.14608 lineto 0.5 0.10077 lineto 0.53968 0.06403 lineto 0.55952 0.04926 lineto 0.57937 0.03704 lineto 0.59921 0.02744 lineto 0.60913 0.02364 lineto 0.61905 0.02051 lineto 0.62897 0.01806 lineto 0.63393 0.01708 lineto 0.63889 0.01628 lineto 0.64385 0.01564 lineto 0.64633 0.01538 lineto 0.64881 0.01517 lineto 0.65129 0.01499 lineto 0.65377 0.01486 lineto Mistroke 0.65501 0.01481 lineto 0.65625 0.01477 lineto 0.65749 0.01474 lineto 0.65873 0.01472 lineto 0.65997 0.01472 lineto 0.66121 0.01472 lineto 0.66245 0.01473 lineto 0.66369 0.01475 lineto 0.66493 0.01478 lineto 0.66617 0.01483 lineto 0.66865 0.01494 lineto 0.67113 0.0151 lineto 0.67361 0.0153 lineto 0.67857 0.01581 lineto 0.68353 0.01649 lineto 0.68849 0.01733 lineto 0.69841 0.01948 lineto 0.70833 0.02225 lineto 0.71825 0.02563 lineto 0.7381 0.03415 lineto 0.77778 0.05772 lineto 0.81746 0.08887 lineto 0.85714 0.12599 lineto 0.89683 0.16729 lineto 0.93651 0.2109 lineto 0.97619 0.2549 lineto Mfstroke grestore grestore 0 0 moveto 1 0 lineto 1 0.61803 lineto 0 0.61803 lineto closepath clip newpath % End of Graphics MathPictureEnd :[font = output; output; inactive; preserveAspect; rightWrapOffset = 526; endGroup; endGroup; endGroup; ] {{(CStep[t]*(33*E^(t/2) - 33*Cos[(3*11^(1/2)*t)/2] - 11^(1/2)*Sin[(3*11^(1/2)*t)/2]))/(825*E^(t/2)) + (CStep[t]*(11*Cos[(3*11^(1/2)*t)/2] + 11^(1/2)*Sin[(3*11^(1/2)*t)/2]))/(11*E^(t/2)), (2*CStep[t]*Sin[(3*11^(1/2)*t)/2])/(3*11^(1/2)*E^(t/2)) + (CStep[t]*(11*Cos[(3*11^(1/2)*t)/2] - 17*11^(1/2)*Sin[(3*11^(1/2)*t)/2]))/(11*E^(t/2))}, (CStep[t]*(33*E^(t/2) - 33*Cos[(3*11^(1/2)*t)/2] - 11^(1/2)*Sin[(3*11^(1/2)*t)/2]))/(825*E^(t/2)) + (CStep[t]*(11*Cos[(3*11^(1/2)*t)/2] + 11^(1/2)*Sin[(3*11^(1/2)*t)/2]))/ (11*E^(t/2))} ;[o] t/2 3 Sqrt[11] t CStep[t] (33 E - 33 Cos[------------] - 2 3 Sqrt[11] t Sqrt[11] Sin[------------]) 2 {{---------------------------------------------------------------------- \ t/2 825 E 3 Sqrt[11] t 3 Sqrt[11] t CStep[t] (11 Cos[------------] + Sqrt[11] Sin[------------]) 2 2 + ------------------------------------------------------------, t/2 11 E 3 Sqrt[11] t 2 CStep[t] Sin[------------] 2 ---------------------------- + t/2 3 Sqrt[11] E 3 Sqrt[11] t 3 Sqrt[11] t CStep[t] (11 Cos[------------] - 17 Sqrt[11] Sin[------------]) 2 2 ---------------------------------------------------------------}, t/2 11 E t/2 3 Sqrt[11] t CStep[t] (33 E - 33 Cos[------------] - 2 3 Sqrt[11] t Sqrt[11] Sin[------------]) 2 ---------------------------------------------------------------------- \ t/2 825 E 3 Sqrt[11] t 3 Sqrt[11] t CStep[t] (11 Cos[------------] + Sqrt[11] Sin[------------]) 2 2 + ------------------------------------------------------------} t/2 11 E :[font = section; inactive; Cclosed; preserveAspect; rightWrapOffset = 526; startGroup; ] Controllability :[font = text; inactive; preserveAspect; rightWrapOffset = 526; ] A state space system om a stamdard form is completely state controllable if and only if at any time t = t0, there exists an unconstrained control signal u(t) that can drive the system from any initial state x(0) to any final state. This must be done in a finite time interval t0<t<t1. If this holds true for all states, then a system is considered to be completely state controllable. For any given initial state x(0), a system is completely state controllable if and only if the (n x nr) matrix (called the controllability matrix) [ B | AB | ... | An-2B | An-1B ] , is full rank (i.e., of rank n, where `n' is the dimension of the state space). COSY_PAK Function Controllable[A, B]: returns a logic (boolean) value representing the complete state controllability of system A, B. ;[s] 14:0,0;559,1;562,2;567,3;570,4;573,5;657,6;674,7;675,8;694,9;784,10;786,11;788,12;789,13;790,-1; 14:1,13,10,Times,0,14,0,0,0;1,13,10,Times,32,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,13,10,Times,32,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,13,10,Times,32,14,0,0,0;1,13,11,Courier,1,17,0,0,0;1,11,9,Courier,1,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,11,8,Times,0,12,0,0,0; :[font = subsubsection; inactive; Cclosed; preserveAspect; rightWrapOffset = 526; startGroup; ] Example 1 :[font = input; Cclosed; preserveAspect; rightWrapOffset = 526; startGroup; ] a={{1,1},{2,-1}};b={{0},{1}}; Controllable[a,b] :[font = output; output; inactive; preserveAspect; rightWrapOffset = 526; endGroup; endGroup; ] True ;[o] True :[font = subsubsection; inactive; Cclosed; preserveAspect; rightWrapOffset = 526; startGroup; ] Example 2 :[font = input; Cclosed; preserveAspect; rightWrapOffset = 526; startGroup; ] a={{1,1},{0,-1}};b={{1},{0}}; Controllable[a,b] :[font = output; output; inactive; preserveAspect; rightWrapOffset = 526; endGroup; endGroup; endGroup; ] False ;[o] False :[font = section; inactive; Cclosed; preserveAspect; rightWrapOffset = 526; startGroup; ] Observability :[font = text; inactive; preserveAspect; rightWrapOffset = 526; ] A system represented in a standard state space form is considered to be completely observable if and only if all the system's states at any time t = t0 (x(t0)) can be calculated from the value of the output y(t) over a finite time interval t0<t<t1. A system is completely observable if and only if the (mn x n) matrix (called the observability matrix) | C | | CA | | . | | . | | . | | CAn-2 | | CAn-1 | is full rank (i.e., has a rank n). COSY_PAK Function Observable[A, C]: Returns a logic (boolean) value representing the complete state observability of system A, C. ;[s] 20:0,0;72,1;82,2;83,3;93,4;263,5;284,6;398,7;401,8;412,9;415,10;418,11;456,12;473,13;474,14;491,15;581,16;582,17;584,18;585,19;587,-1; 20:1,13,10,Times,0,14,0,0,0;1,13,10,Times,2,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,13,10,Times,2,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,13,10,Times,2,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,13,10,Times,32,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,13,10,Times,32,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,11,9,Courier,0,14,0,0,0;1,13,11,Courier,1,17,0,0,0;1,11,9,Courier,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0; :[font = subsubsection; inactive; Cclosed; preserveAspect; rightWrapOffset = 526; startGroup; ] Example 1 :[font = input; Cclosed; preserveAspect; rightWrapOffset = 526; startGroup; ] a={{1,1},{-2,-1}}; c={{1,0}}; Observable[a,c] :[font = output; output; inactive; preserveAspect; rightWrapOffset = 526; endGroup; endGroup; endGroup; ] True ;[o] True :[font = section; inactive; Cclosed; preserveAspect; rightWrapOffset = 526; startGroup; ] Output-Controllability :[font = text; inactive; preserveAspect; rightWrapOffset = 526; ] If one wants to control the output of system instead of the state the system must be output controllable as opposed to state controllable. A system in the standard state space form is completely output controllable if at any time t = t0 there exists an unconstrained control signal u that can drive the system from any initial output y(0) to any final output. This must be done in a finite time interval t0<t<t1. For any given initial output y(0), a system is complete output controllable if and only if the m x (n + 1)r matrix [ CB | CAB | ... | CAn-2B | CAn-1B | D ], is full rank. COSY_PAK Function OutControllable[A, B, C, D]: Returns a logic (boolean) value representing the output controllability of system A, B, C, D. ;[s] 23:0,0;95,1;114,2;199,3;229,4;480,5;508,6;616,7;619,8;625,9;628,10;652,11;669,12;670,13;698,14;781,15;782,16;784,17;785,18;787,19;788,20;790,21;791,22;792,-1; 23:1,13,10,Times,0,14,0,0,0;1,13,10,Times,2,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,13,10,Times,2,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,13,10,Times,2,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,13,10,Times,32,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,13,10,Times,32,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,13,11,Courier,1,17,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0; :[font = subsubsection; inactive; Cclosed; preserveAspect; rightWrapOffset = 526; startGroup; ] Example 1 :[font = input; Cclosed; preserveAspect; rightWrapOffset = 526; startGroup; ] a={{1,1},{-2,-1}}; b={{0},{1}}; c={{1,0}}; d={{0,0}}; OutControllable[a,b,c,] :[font = output; output; inactive; preserveAspect; rightWrapOffset = 526; endGroup; endGroup; endGroup; ] True ;[o] True :[font = section; inactive; Cclosed; preserveAspect; rightWrapOffset = 526; startGroup; ] Pole-Placement Design :[font = text; inactive; preserveAspect; rightWrapOffset = 526; ] The pole placement approach to controller design allows the designer to place all closed-loop poles of the system. The system x' = Ax + Bu with the choice of the input u = -Kx, transforms the system equation to x' = (A - BK)x. The feedback gain matrix K can be selected such that the eigenvalues of (A - BK) have the values of the desired pole locations. System controllability is assumed. Ackermann's formula K = [0 0 ... 0 1] [B | AB | ... | An-1B]-1 f(A) is applied to the input matrices A and B. The function f(A) can be computed by first calculating the desired characteristic equation f(s) = (s-pd1) (s-pd2) ... (s-pdn) = |sI - (A - BK)| where pd1, pd2, ... pdn are the desired location of poles (eigenvalues). We can find f(A), by replacing the variable `s' by A. Further, f(A) can be calculated using Cayley-Hamilton theorem. Remark : The principle of the Cayley-Hamilton theorem states that a matrix satisfies its own characteristic equation. COSY_PAK Function PolePlaceGain[A, B, newpoles]: Returns gain matirix K to place poles of system A - BK at locations specified by newpoles. Uses Ackermann's formula. ;[s] 31:0,0;517,1;520,2;522,3;524,4;689,5;690,6;691,7;697,8;698,9;699,10;709,11;710,12;711,13;760,14;761,15;762,16;765,17;766,18;767,19;774,20;775,21;776,22;1067,23;1084,24;1085,25;1115,26;1137,27;1138,28;1164,29;1170,30;1234,-1; 31:1,13,10,Times,0,14,0,0,0;1,13,10,Times,32,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,13,10,Times,32,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,13,10,Times,64,14,0,0,0;1,13,10,Times,64,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,13,10,Times,64,14,0,0,0;1,13,10,Times,64,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,13,10,Times,64,14,0,0,0;1,13,10,Times,64,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,13,10,Times,64,14,0,0,0;1,13,10,Times,64,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,13,10,Times,64,14,0,0,0;1,13,10,Times,64,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,13,10,Times,64,14,0,0,0;1,13,10,Times,64,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,13,11,Courier,1,17,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0; :[font = subsubsection; inactive; Cclosed; preserveAspect; rightWrapOffset = 526; startGroup; ] Example :[font = input; Cclosed; preserveAspect; rightWrapOffset = 526; startGroup; ] a={{0,1},{20.6,0}}; b={{0},{1}}; c={{0,1}}; poles={-1.8+ I 2.4, -1.8- I 2.4}; PolePlaceGain[a,b,poles] ;[s] 3:0,0;78,1;91,2;102,-1; 3:1,11,9,Courier,1,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,10,8,Courier,1,12,0,0,0; :[font = output; output; inactive; preserveAspect; rightWrapOffset = 526; endGroup; endGroup; endGroup; ] {{29.6 + 0.*I, 3.6 + 0.*I}} ;[o] {{29.6 + 0. I, 3.6 + 0. I}} :[font = section; inactive; Cclosed; preserveAspect; rightWrapOffset = 526; startGroup; ] Observer Design :[font = text; inactive; preserveAspect; rightWrapOffset = 526; ] Not all state variables are always available for use in state feedback control. A system and the corresponding control law described by x' = Ax + Bu y = Cx u = -Kx where K = r x n gain matrix, is not realizable since in many practical situations the state vector is not available (e.g. cannot be measured). This problem can be overcome by desingning an `observer' to estimate the state variables by observing the output and the input variables. Such an observer is a dynamic observer if it has to be implemented as a dynamic system. An observer is a full order observer if all states can be estimated. If the system is completely state observable, then a full order observer can be designed. The complete state observer is given by x~' = Ax~ + Bu + Ke(y - C x~). where x~ is the estimate of the state variable x by the observer, i.e., x~ is the output of the observer. The input to this dynamic observer are the output y and the input u. Ackermann's formula can be used to find the state observer gain matrix Ke using the dual of the above system which gives z' = A*z + C*v w = B*z and | C | -1 | 0 | | . | | . | K*= f(A*)* | . | | . | | . | | . | | CAn-2 | | 0 | | CAn-1 | | 1 | where Ke = K*. The notation `*' represents the complex conjugate transpose. The feedback gain matrix Ke can be selected such that the poles of the observers are much faster than pole locations of the controller. The function f(A*) can be computed by first calculating the desired characteristic equation f(s) = (s-pd1) (s-pd2) ... (s-pdn) where pd1, pd2, ... pdn are the desired location of poles (eigenvalues) for the dynamic observer. These values are choosen depending on how fast one can allow the state estimates to converge to the actual state variables. We can find f(A*), by replacing the variable `s' by A* - the complex conjugate transpose of A. Also, f(A*) can be calculated using Cayley-Hamilton theorem. Remark : Cayley-Hamilton theorem states that a matrix satisfies its own characteristic equation. COSY_PAK Function ObsPolePlace[A, C, newpoles]: Determines state observer gain matrix using Ackermann's formula. ;[s] 31:0,0;1225,1;1227,2;1298,3;1301,4;1318,5;1321,6;1667,7;1668,8;1669,9;1675,10;1676,11;1677,12;1687,13;1688,14;1689,15;1698,16;1699,17;1700,18;1703,19;1704,20;1705,21;1712,22;1713,23;1714,24;2074,25;2084,26;2171,27;2173,28;2190,29;2221,30;2285,-1; 31:1,13,10,Times,0,14,0,0,0;1,13,10,Times,32,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,13,10,Times,32,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,13,10,Times,32,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,13,10,Times,64,14,0,0,0;1,13,10,Times,64,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,13,10,Times,64,14,0,0,0;1,13,10,Times,64,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,13,10,Times,64,14,0,0,0;1,13,10,Times,64,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,13,10,Times,64,14,0,0,0;1,13,10,Times,64,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,13,10,Times,64,14,0,0,0;1,13,10,Times,64,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,13,10,Times,64,14,0,0,0;1,13,10,Times,64,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,11,Courier,1,17,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0; :[font = subsubsection; inactive; Cclosed; preserveAspect; rightWrapOffset = 526; startGroup; ] Example :[font = input; Cclosed; preserveAspect; rightWrapOffset = 526; startGroup; ] a={{0,20.6},{1,0}}; b={{0},{1}}; c={{0,1}}; despoles ={-1.8+ I 2.4, -1.8- I 2.4}; ObsPolePlace[a,c,despoles] ;[s] 3:0,0;82,1;94,2;115,-1; 3:1,11,9,Courier,1,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,10,8,Courier,1,12,0,0,0; :[font = output; output; inactive; preserveAspect; rightWrapOffset = 526; endGroup; endGroup; endGroup; ] {{29.6 + 0.*I}, {3.6 + 0.*I}} ;[o] {{29.6 + 0. I}, {3.6 + 0. I}} ^*)